package com.debao.system.domain;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;

/**
 * 教练对象 coach
 *
 * @date 2024-05-15
 */
@Data
@Accessors(chain = true)
public class Coach {
    /**
     * id
     */
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 教练姓名
     */
    @NotBlank(message = "教练姓名不能为空")
    private String name;

    /**
     * 头像
     */
    @NotBlank(message = "头像不能为空")
    private String avatar;

    /**
     * 简单介绍200字以内
     */
    private String introduce;

    /**
     * 技能认证
     */
//    @NotBlank(message = "技能认证不能为空")
    private String skilled;

    /**
     * 擅长
     */
    @NotBlank(message = "擅长不能为空")
    private String major;

    /**
     * 风格
     */
    @NotBlank(message = "风格不能为空")
    private String style;

    /**
     * 课时费 分/每小时
     */
    private Long price;

    /**
     * 状态 -1 审核不通过  0 待审核  1 审核通过已上线 2 审核通过待上线
     */
    private Integer status;

    /**
     * 所属场馆
     */
    private Long stadiumId;

    /**
     * 入驻时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createAt;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date updateAt;

    /**
     * 教练标签
     */
    private String label;

    /**
     * 获得荣誉
     */
    private String honor;
    /**
     * 课程数量
     */
    private Integer courseNum;
    /**
     * 学生数量
     */
    private Integer studentNum;
    /**
     * 教练热度
     */
    private Integer hot;
    /**
     * 教练粉丝数量
     */
    private Integer fans;
    /**
     * 视频
     */
    private String video;

    /**
     * 评分
     */
    private BigDecimal score;

    /**
     * 等级
     */
    private Long grade;

    private String keyWord;

    private String column;

    private String sort;

    /** 是否删除 Y N */
    private String isDel;

    /**
     * 教练手机号码
     */
    private String phone;


    /**
     * 排序值
     */
    private Long sortValue;


    @Data
    @Accessors(chain = true)
    static class Banner {
        private String url;
    }

    public List<Banner> getSkilledList() {
        if (skilled == null || skilled.isEmpty() || skilled.trim().isEmpty()) {
            return new ArrayList<>();
        }
        return Arrays.stream(skilled.split(",", -1)).map(String::trim).filter(url -> !url.isEmpty()).map(url -> new Banner().setUrl(url)).collect(Collectors.toList());
    }
}
